home *** CD-ROM | disk | FTP | other *** search
- /*
- File: MIDI.h
-
- Contains: MIDI Manager Interfaces.
-
- Version: Technology: System 7.5
- Release: Universal Interfaces 3.0d3 on Copland DR1
-
- Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
-
- Bugs?: If you find a problem with this file, send the file and version
- information (from above) and the problem description to:
-
- Internet: apple.bugs@applelink.apple.com
- AppleLink: APPLE.BUGS
-
- */
- #ifndef __MIDI__
- #define __MIDI__
-
- #ifndef __ERRORS__
- #include <Errors.h>
- #endif
- #ifndef __TYPES__
- #include <Types.h>
- #endif
- #ifndef __MIXEDMODE__
- #include <MixedMode.h>
- #endif
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #if PRAGMA_IMPORT_SUPPORTED
- #pragma import on
- #endif
-
- #if PRAGMA_ALIGN_SUPPORTED
- #pragma options align=mac68k
- #endif
-
- #if FOR_SYSTEM7_ONLY
- /*
- * * * N O T E * * *
-
- This file has been updated to include MIDI 2.0 interfaces.
-
- The MIDI 2.0 interfaces were developed for the classic 68K runtime.
- Since then, Apple has created the PowerPC and CFM 68K runtimes.
- Currently, the extra functions in MIDI 2.0 are not in InterfaceLib
- and thus not callable from PowerPC and CFM 68K runtimes (you'll
- get a linker error).
- */
-
- enum {
- midiMaxNameLen = 31, /*maximum number of characters in port and client names*/
- /* Time formats */
- midiFormatMSec = 0, /*milliseconds*/
- midiFormatBeats = 1, /*beats*/
- midiFormat24fpsBit = 2, /*24 frames/sec.*/
- midiFormat25fpsBit = 3, /*25 frames/sec.*/
- midiFormat30fpsDBit = 4, /*30 frames/sec. drop-frame*/
- midiFormat30fpsBit = 5, /*30 frames/sec.*/
- midiFormat24fpsQF = 6, /*24 frames/sec. longInt format */
- midiFormat25fpsQF = 7, /*25 frames/sec. longInt format */
- midiFormat30fpsDQF = 8, /*30 frames/sec. drop-frame longInt format */
- midiFormat30fpsQF = 9, /*30 frames/sec. longInt format */
- midiInternalSync = 0, /*internal sync*/
- midiExternalSync = 1, /*external sync*/
- /* Port types*/
- midiPortTypeTime = 0, /*time port*/
- midiPortTypeInput = 1, /*input port*/
- midiPortTypeOutput = 2, /*output port*/
- midiPortTypeTimeInv = 3, /*invisible time port*/
- midiPortInvisible = 0x8000, /*logical OR this to other types to make invisible ports*/
- midiPortTypeMask = 0x0007, /*logical AND with this to convert new port types to old,*/
- /*ie. to strip the property bits*/
- /* OffsetTimes */
- midiGetEverything = 0x7FFFFFFF, /*get all packets, regardless of time stamps*/
- midiGetNothing = 0x80000000, /*get no packets, regardless of time stamps*/
- midiGetCurrent = 0x00000000 /*get current packets only*/
- };
-
- /*
- MIDI data and messages are passed in MIDIPacket records (see below).
- The first byte of every MIDIPacket contains a set of flags
-
- bits 0-1 00 = new MIDIPacket, not continued
- 01 = begining of continued MIDIPacket
- 10 = end of continued MIDIPacket
- 11 = continuation
- bits 2-3 reserved
-
- bits 4-6 000 = packet contains MIDI data
-
- 001 = packet contains MIDI Manager message
-
- bit 7 0 = MIDIPacket has valid stamp
- 1 = stamp with current clock
- */
-
- enum {
- midiContMask = 0x03,
- midiNoCont = 0x00,
- midiStartCont = 0x01,
- midiMidCont = 0x03,
- midiEndCont = 0x02,
- midiTypeMask = 0x70,
- midiMsgType = 0x00,
- midiMgrType = 0x10,
- midiTimeStampMask = 0x80,
- midiTimeStampCurrent = 0x80,
- midiTimeStampValid = 0x00, /* MIDIPacket command words (the first word in the data field for midiMgrType messages) */
- midiOverflowErr = 0x0001,
- midiSCCErr = 0x0002,
- midiPacketErr = 0x0003, /*all command words less than this value are error indicators*/
- midiMaxErr = 0x00FF, /* Valid results to be returned by readHooks */
- midiKeepPacket = 0,
- midiMorePacket = 1,
- midiNoMorePacket = 2,
- midiHoldPacket = 3, /* Driver calls */
- midiOpenDriver = 1,
- midiCloseDriver = 2
- };
-
-
- enum {
- mdvrAbortNotesOff = 0, /*abort previous mdvrNotesOff request*/
- mdvrChanNotesOff = 1, /*generate channel note off messages*/
- mdvrAllNotesOff = 2, /*generate all note off messages*/
- mdvrStopOut = 0, /*stop calling MDVROut temporarily*/
- mdvrStartOut = 1 /*resume calling MDVROut*/
- };
-
- struct MIDIPacket {
- UInt8 flags;
- UInt8 len;
- long tStamp;
- UInt8 data[249];
- };
- typedef struct MIDIPacket MIDIPacket;
-
- typedef MIDIPacket *MIDIPacketPtr;
- typedef pascal short (*MIDIReadHookProcPtr)(MIDIPacketPtr myPacket, long myRefCon);
- typedef pascal void (*MIDITimeProcPtr)(long curTime, long myRefCon);
- typedef pascal void (*MIDIConnectionProcPtr)(short refnum, long refcon, short portType, OSType clientID, OSType portID, Boolean connect, short direction);
- typedef pascal long (*MDVRCommProcPtr)(short refnum, short request, long refCon);
- typedef pascal void (*MDVRTimeCodeProcPtr)(short refnum, short newFormat, long refCon);
- typedef pascal void (*MDVRReadProcPtr)(char *midiChars, short length, long refCon);
-
- #if GENERATINGCFM
- typedef UniversalProcPtr MIDIReadHookUPP;
- typedef UniversalProcPtr MIDITimeUPP;
- typedef UniversalProcPtr MIDIConnectionUPP;
- typedef UniversalProcPtr MDVRCommUPP;
- typedef UniversalProcPtr MDVRTimeCodeUPP;
- typedef UniversalProcPtr MDVRReadUPP;
- #else
- typedef MIDIReadHookProcPtr MIDIReadHookUPP;
- typedef MIDITimeProcPtr MIDITimeUPP;
- typedef MIDIConnectionProcPtr MIDIConnectionUPP;
- typedef MDVRCommProcPtr MDVRCommUPP;
- typedef MDVRTimeCodeProcPtr MDVRTimeCodeUPP;
- typedef MDVRReadProcPtr MDVRReadUPP;
- #endif
- struct MIDIClkInfo {
- short syncType; /*synchronization external/internal*/
- long curTime; /*current value of port's clock*/
- short format; /*time code format*/
- };
- typedef struct MIDIClkInfo MIDIClkInfo;
-
- struct MIDIIDRec {
- OSType clientID;
- OSType portID;
- };
- typedef struct MIDIIDRec MIDIIDRec;
-
- struct MIDIPortInfo {
- short portType; /*type of port*/
- MIDIIDRec timeBase; /*MIDIIDRec for time base*/
- short numConnects; /*number of connections*/
- MIDIIDRec cList[1]; /*ARRAY [1..numConnects] of MIDIIDRec*/
- };
- typedef struct MIDIPortInfo MIDIPortInfo;
-
- typedef MIDIPortInfo *MIDIPortInfoPtr;
- typedef MIDIPortInfoPtr *MIDIPortInfoHdl;
- typedef MIDIPortInfoPtr *MIDIPortInfoHandle;
- struct MIDIPortParams {
- OSType portID; /*ID of port, unique within client*/
- short portType; /*Type of port - input, output, time, etc.*/
- short timeBase; /*refnum of time base, 0 if none*/
- long offsetTime; /*offset for current time stamps*/
- MIDIReadHookProcPtr readHook; /*routine to call when input data is valid*/
- long refCon; /*refcon for port (for client use)*/
- MIDIClkInfo initClock; /*initial settings for a time base*/
- Str255 name; /*name of the port, This is a real live string, not a ptr.*/
- };
- typedef struct MIDIPortParams MIDIPortParams;
-
- typedef MIDIPortParams *MIDIPortParamsPtr;
- struct MIDIIDList {
- short numIDs;
- OSType list[1];
- };
- typedef struct MIDIIDList MIDIIDList;
-
- typedef MIDIIDList *MIDIIDListPtr;
- typedef MIDIIDListPtr *MIDIIDListHdl;
- typedef MIDIIDListPtr *MIDIIDListHandle;
- /* MDVR Control structs*/
- struct MDVRInCtlRec {
- short timeCodeClock; /*refnum of time base for time code*/
- short timeCodeFormat; /*format of time code output*/
- MDVRReadProcPtr readProc; /*proc to call with intput characters*/
- MDVRCommProcPtr commProc; /*proc to call for handshaking*/
- long refCon; /*refCon passed to readProc, commProc*/
- };
- typedef struct MDVRInCtlRec MDVRInCtlRec;
-
- typedef MDVRInCtlRec *MDVRInCtlPtr;
- struct MDVROutCtlRec {
- short timeCodeClock; /*time base driven by time code*/
- short timeCodeFormat; /*format of time code to listen to*/
- MDVRTimeCodeProcPtr timeCodeProc; /*proc called on time code fmt change*/
- MDVRCommProcPtr commProc; /*proc called for handshaking*/
- long refCon; /*refCon passed to timeCodeProc*/
- Boolean timeCodeFilter; /*filter time code if true*/
- UInt8 padding; /*unused pad byte*/
- long midiMsgTicks; /*value of Ticks when MIDI msg rcvd*/
- long timeCodeTicks; /*value of Ticks when time code rcvd*/
- };
- typedef struct MDVROutCtlRec MDVROutCtlRec;
-
- typedef MDVROutCtlRec *MDVROutCtlPtr;
- typedef void *MDVRPtr;
- extern pascal NumVersion MIDIVersion(void )
- FOURWORDINLINE(0x203C, 0x0000, 0x0004, 0xA800);
-
- extern pascal OSErr MIDISignIn(OSType clientID, long refCon, Handle icon, ConstStr255Param name)
- FOURWORDINLINE(0x203C, 0x0004, 0x0004, 0xA800);
-
- extern pascal void MIDISignOut(OSType clientID)
- FOURWORDINLINE(0x203C, 0x0008, 0x0004, 0xA800);
-
- extern pascal MIDIIDListHandle MIDIGetClients(void )
- FOURWORDINLINE(0x203C, 0x000C, 0x0004, 0xA800);
-
- extern pascal void MIDIGetClientName(OSType clientID, Str255 name)
- FOURWORDINLINE(0x203C, 0x0010, 0x0004, 0xA800);
-
- extern pascal void MIDISetClientName(OSType clientID, ConstStr255Param name)
- FOURWORDINLINE(0x203C, 0x0014, 0x0004, 0xA800);
-
- extern pascal MIDIIDListHandle MIDIGetPorts(OSType clientID)
- FOURWORDINLINE(0x203C, 0x0018, 0x0004, 0xA800);
-
- extern pascal OSErr MIDIAddPort(OSType clientID, short BufSize, short *refnum, MIDIPortParamsPtr init)
- FOURWORDINLINE(0x203C, 0x001C, 0x0004, 0xA800);
-
- extern pascal MIDIPortInfoHandle MIDIGetPortInfo(OSType clientID, OSType portID)
- FOURWORDINLINE(0x203C, 0x0020, 0x0004, 0xA800);
-
- extern pascal OSErr MIDIConnectData(OSType srcClID, OSType srcPortID, OSType dstClID, OSType dstPortID)
- FOURWORDINLINE(0x203C, 0x0024, 0x0004, 0xA800);
-
- extern pascal OSErr MIDIUnConnectData(OSType srcClID, OSType srcPortID, OSType dstClID, OSType dstPortID)
- FOURWORDINLINE(0x203C, 0x0028, 0x0004, 0xA800);
-
- extern pascal OSErr MIDIConnectTime(OSType srcClID, OSType srcPortID, OSType dstClID, OSType dstPortID)
- FOURWORDINLINE(0x203C, 0x002C, 0x0004, 0xA800);
-
- extern pascal OSErr MIDIUnConnectTime(OSType srcClID, OSType srcPortID, OSType dstClID, OSType dstPortID)
- FOURWORDINLINE(0x203C, 0x0030, 0x0004, 0xA800);
-
- extern pascal void MIDIFlush(short refnum)
- FOURWORDINLINE(0x203C, 0x0034, 0x0004, 0xA800);
-
- extern pascal ProcPtr MIDIGetReadHook(short refnum)
- FOURWORDINLINE(0x203C, 0x0038, 0x0004, 0xA800);
-
- extern pascal void MIDISetReadHook(short refnum, ProcPtr hook)
- FOURWORDINLINE(0x203C, 0x003C, 0x0004, 0xA800);
-
- extern pascal void MIDIGetPortName(OSType clientID, OSType portID, Str255 name)
- FOURWORDINLINE(0x203C, 0x0040, 0x0004, 0xA800);
-
- extern pascal void MIDISetPortName(OSType clientID, OSType portID, ConstStr255Param name)
- FOURWORDINLINE(0x203C, 0x0044, 0x0004, 0xA800);
-
- extern pascal void MIDIWakeUp(short refnum, long time, long period, MIDITimeProcPtr timeProc)
- FOURWORDINLINE(0x203C, 0x0048, 0x0004, 0xA800);
-
- extern pascal void MIDIRemovePort(short refnum)
- FOURWORDINLINE(0x203C, 0x004C, 0x0004, 0xA800);
-
- extern pascal short MIDIGetSync(short refnum)
- FOURWORDINLINE(0x203C, 0x0050, 0x0004, 0xA800);
-
- extern pascal void MIDISetSync(short refnum, short sync)
- FOURWORDINLINE(0x203C, 0x0054, 0x0004, 0xA800);
-
- extern pascal long MIDIGetCurTime(short refnum)
- FOURWORDINLINE(0x203C, 0x0058, 0x0004, 0xA800);
-
- extern pascal void MIDISetCurTime(short refnum, long time)
- FOURWORDINLINE(0x203C, 0x005C, 0x0004, 0xA800);
-
- extern pascal void MIDIStartTime(short refnum)
- FOURWORDINLINE(0x203C, 0x0060, 0x0004, 0xA800);
-
- extern pascal void MIDIStopTime(short refnum)
- FOURWORDINLINE(0x203C, 0x0064, 0x0004, 0xA800);
-
- extern pascal void MIDIPoll(short refnum, long offsetTime)
- FOURWORDINLINE(0x203C, 0x0068, 0x0004, 0xA800);
-
- extern pascal OSErr MIDIWritePacket(short refnum, MIDIPacketPtr packet)
- FOURWORDINLINE(0x203C, 0x006C, 0x0004, 0xA800);
-
- extern pascal Boolean MIDIWorldChanged(OSType clientID)
- FOURWORDINLINE(0x203C, 0x0070, 0x0004, 0xA800);
-
- extern pascal long MIDIGetOffsetTime(short refnum)
- FOURWORDINLINE(0x203C, 0x0074, 0x0004, 0xA800);
-
- extern pascal void MIDISetOffsetTime(short refnum, long offsetTime)
- FOURWORDINLINE(0x203C, 0x0078, 0x0004, 0xA800);
-
- extern pascal long MIDIConvertTime(short srcFormat, short dstFormat, long time)
- FOURWORDINLINE(0x203C, 0x007C, 0x0004, 0xA800);
-
- extern pascal long MIDIGetRefCon(short refnum)
- FOURWORDINLINE(0x203C, 0x0080, 0x0004, 0xA800);
-
- extern pascal void MIDISetRefCon(short refnum, long refCon)
- FOURWORDINLINE(0x203C, 0x0084, 0x0004, 0xA800);
-
- extern pascal long MIDIGetClRefCon(OSType clientID)
- FOURWORDINLINE(0x203C, 0x0088, 0x0004, 0xA800);
-
- extern pascal void MIDISetClRefCon(OSType clientID, long refCon)
- FOURWORDINLINE(0x203C, 0x008C, 0x0004, 0xA800);
-
- extern pascal short MIDIGetTCFormat(short refnum)
- FOURWORDINLINE(0x203C, 0x0090, 0x0004, 0xA800);
-
- extern pascal void MIDISetTCFormat(short refnum, short format)
- FOURWORDINLINE(0x203C, 0x0094, 0x0004, 0xA800);
-
- extern pascal void MIDISetRunRate(short refnum, short rate, long time)
- FOURWORDINLINE(0x203C, 0x0098, 0x0004, 0xA800);
-
- extern pascal Handle MIDIGetClientIcon(OSType clientID)
- FOURWORDINLINE(0x203C, 0x009C, 0x0004, 0xA800);
-
- extern pascal ProcPtr MIDICallAddress(short callNum)
- FOURWORDINLINE(0x203C, 0x00A4, 0x0004, 0xA800);
-
- extern pascal void MIDISetConnectionProc(short refNum, ProcPtr connectionProc, long refCon)
- FOURWORDINLINE(0x203C, 0x00A8, 0x0004, 0xA800);
-
- extern pascal void MIDIGetConnectionProc(short refnum, ProcPtr *connectionProc, long *refCon)
- FOURWORDINLINE(0x203C, 0x00AC, 0x0004, 0xA800);
-
- extern pascal void MIDIDiscardPacket(short refnum, MIDIPacketPtr packet)
- FOURWORDINLINE(0x203C, 0x00B0, 0x0004, 0xA800);
-
- extern pascal OSErr MDVRSignIn(OSType clientID, long refCon, Handle icon, Str255 name)
- FOURWORDINLINE(0x203C, 0x00B4, 0x0004, 0xA800);
-
- extern pascal void MDVRSignOut(OSType clientID)
- FOURWORDINLINE(0x203C, 0x00B8, 0x0004, 0xA800);
-
- extern pascal MDVRPtr MDVROpen(short portType, short refnum)
- FOURWORDINLINE(0x203C, 0x00BC, 0x0004, 0xA800);
-
- extern pascal void MDVRClose(MDVRPtr driverPtr)
- FOURWORDINLINE(0x203C, 0x00C0, 0x0004, 0xA800);
-
- extern pascal void MDVRControlIn(MDVRPtr portPtr, MDVRInCtlPtr inputCtl)
- FOURWORDINLINE(0x203C, 0x00C4, 0x0004, 0xA800);
-
- extern pascal void MDVRControlOut(MDVRPtr portPtr, MDVROutCtlPtr outputCtl)
- FOURWORDINLINE(0x203C, 0x00C8, 0x0004, 0xA800);
-
- extern pascal void MDVRIn(MDVRPtr portPtr)
- FOURWORDINLINE(0x203C, 0x00CC, 0x0004, 0xA800);
-
- extern pascal void MDVROut(MDVRPtr portPtr, char *dataPtr, short length)
- FOURWORDINLINE(0x203C, 0x00D0, 0x0004, 0xA800);
-
- extern pascal void MDVRNotesOff(MDVRPtr portPtr, short mode)
- FOURWORDINLINE(0x203C, 0x00D4, 0x0004, 0xA800);
-
-
- enum {
- uppMIDIReadHookProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(short)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MIDIPacketPtr)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
- uppMIDITimeProcInfo = kPascalStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
- uppMIDIConnectionProcInfo = kPascalStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
- | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(OSType)))
- | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(OSType)))
- | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(Boolean)))
- | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(short))),
- uppMDVRCommProcInfo = kPascalStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(long)))
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
- uppMDVRTimeCodeProcInfo = kPascalStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))),
- uppMDVRReadProcInfo = kPascalStackBased
- | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(char *)))
- | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
- | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
- };
-
- #if GENERATINGCFM
- #define NewMIDIReadHookProc(userRoutine) \
- (MIDIReadHookUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMIDIReadHookProcInfo, GetCurrentArchitecture())
- #define NewMIDITimeProc(userRoutine) \
- (MIDITimeUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMIDITimeProcInfo, GetCurrentArchitecture())
- #define NewMIDIConnectionProc(userRoutine) \
- (MIDIConnectionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMIDIConnectionProcInfo, GetCurrentArchitecture())
- #define NewMDVRCommProc(userRoutine) \
- (MDVRCommUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMDVRCommProcInfo, GetCurrentArchitecture())
- #define NewMDVRTimeCodeProc(userRoutine) \
- (MDVRTimeCodeUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMDVRTimeCodeProcInfo, GetCurrentArchitecture())
- #define NewMDVRReadProc(userRoutine) \
- (MDVRReadUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMDVRReadProcInfo, GetCurrentArchitecture())
- #else
- #define NewMIDIReadHookProc(userRoutine) \
- ((MIDIReadHookUPP) (userRoutine))
- #define NewMIDITimeProc(userRoutine) \
- ((MIDITimeUPP) (userRoutine))
- #define NewMIDIConnectionProc(userRoutine) \
- ((MIDIConnectionUPP) (userRoutine))
- #define NewMDVRCommProc(userRoutine) \
- ((MDVRCommUPP) (userRoutine))
- #define NewMDVRTimeCodeProc(userRoutine) \
- ((MDVRTimeCodeUPP) (userRoutine))
- #define NewMDVRReadProc(userRoutine) \
- ((MDVRReadUPP) (userRoutine))
- #endif
-
- #if GENERATINGCFM
- #define CallMIDIReadHookProc(userRoutine, myPacket, myRefCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppMIDIReadHookProcInfo, (myPacket), (myRefCon))
- #define CallMIDITimeProc(userRoutine, curTime, myRefCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppMIDITimeProcInfo, (curTime), (myRefCon))
- #define CallMIDIConnectionProc(userRoutine, refnum, refcon, portType, clientID, portID, connect, direction) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppMIDIConnectionProcInfo, (refnum), (refcon), (portType), (clientID), (portID), (connect), (direction))
- #define CallMDVRCommProc(userRoutine, refnum, request, refCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppMDVRCommProcInfo, (refnum), (request), (refCon))
- #define CallMDVRTimeCodeProc(userRoutine, refnum, newFormat, refCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppMDVRTimeCodeProcInfo, (refnum), (newFormat), (refCon))
- #define CallMDVRReadProc(userRoutine, midiChars, length, refCon) \
- CallUniversalProc((UniversalProcPtr)(userRoutine), uppMDVRReadProcInfo, (midiChars), (length), (refCon))
- #else
- #define CallMIDIReadHookProc(userRoutine, myPacket, myRefCon) \
- (*(userRoutine))((myPacket), (myRefCon))
- #define CallMIDITimeProc(userRoutine, curTime, myRefCon) \
- (*(userRoutine))((curTime), (myRefCon))
- #define CallMIDIConnectionProc(userRoutine, refnum, refcon, portType, clientID, portID, connect, direction) \
- (*(userRoutine))((refnum), (refcon), (portType), (clientID), (portID), (connect), (direction))
- #define CallMDVRCommProc(userRoutine, refnum, request, refCon) \
- (*(userRoutine))((refnum), (request), (refCon))
- #define CallMDVRTimeCodeProc(userRoutine, refnum, newFormat, refCon) \
- (*(userRoutine))((refnum), (newFormat), (refCon))
- #define CallMDVRReadProc(userRoutine, midiChars, length, refCon) \
- (*(userRoutine))((midiChars), (length), (refCon))
- #endif
- #endif
-
- #if PRAGMA_ALIGN_SUPPORTED
- #pragma options align=reset
- #endif
-
- #if PRAGMA_IMPORT_SUPPORTED
- #pragma import off
- #endif
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif /* __MIDI__ */
-
-